import os
import datetime, random
# PyMuPDF=1.21.1
import fitz
from tool import filesystem # export PYTHONPATH=$PYTHONPATH:`pwd`
 
def pdf2img(pdf_path, img_dir):
    pdfDoc = fitz.open(pdf_path)
    for idx, page in enumerate(pdfDoc.pages()):
        # 将页面转换为图片
        rotate = int(0)
        # 每个尺寸的缩放系数为1.3，这将为我们生成分辨率提高2.6的图像。
        # 此处若是不做设置，默认图片大小为：792X612, dpi=72
        # pix = page.get_pixmap()
        zoom_x = random.randint(20, 30) * 0.1
        zoom_y = random.randint(20, 30) * 0.1
        # (1.33333333-->1056x816)   (2-->1584x1224)  (3-->3572x2526)
        # x和y的值越大越清晰，图片越大，但处理也越耗时间，这里取决于你想要图片的清晰度
        # 默认为1.333333，一般日常使用3就够了，不能设置太大，太大容易使电脑死机
        mat = fitz.Matrix(zoom_x, zoom_y)
        pix = page.get_pixmap(matrix=mat, dpi=None, colorspace='rgb', alpha=False)

        filename = os.path.basename(pdf_path)
        target_img_name = img_dir + os.path.sep + filename[:-4] + ".{}.png".format(idx)
        # 保存图片
        pix.save(target_img_name)
 
if __name__ == '__main__':
    pdf_dir = r'F:\work\dataset\ocr\pdf\pdf3'
    
    for idx, pdf_path in enumerate(filesystem.get_all_filepath(pdf_dir, [".pdf"])):

        img_dir = pdf_path[:-4]
        if not os.path.exists(img_dir):
            os.makedirs(img_dir, exist_ok=True)
        pdf2img(pdf_path, img_dir)
    


